package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.Especie;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 */
public class EspecieDAO extends GenericSAPDAO{
    
    //Atributos    
    private List<Especie> misEspecies;
    
    //Constructores
    public EspecieDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("T_ESPECIE");
        super.setMyTable(aFunction);
        this.misEspecies=new ArrayList();
    }

    //Getters & Setters

    public List<Especie> getMisEspecies() {
        return misEspecies;
    }

    //MetodosPrivados
    /**
     * Agrega una "especie" a la coleccion "misEspecies".
     * @param laEspecie
     */
    private void addUnaEspecie(Especie laEspecie) {
        this.misEspecies.add(laEspecie);
    }

    
  /**
   * Columnas de Especie:
   * ZESPECIE		ZZESPECIE	CHAR	4	Especie de frutas
   * ZDENOMINAC          ZDENOMIN	CHAR	30	Denominación
   * ZBULSTD		ZBULSTD         DEC	82	Bulto standard
   * ZTEXTO1		CHAR11          CHAR	11	Descrip.Castellano
   * ZTEXTO2		CHAR11          CHAR	11	Descrip.Ingles
   * ZTEXTO3		CHAR11          CHAR	11	Descrip.Organica Castellano
   * ZTEXTO4		CHAR11          CHAR	11	Descrip.Organic Ingles
   * 
   */
    
    //Metodos publidos
    /**
     * Recorre "super.getMyTable()" de la RFC y por cada registro crea una "especie" y lo agrega a "misEspecies".
     */
    @Override
    public void findAll() throws SapGeneralException {
        Especie especie;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                especie=new Especie(super.getMyTable().getString("ZESPECIE"),super.getMyTable().getString("ZDENOMINAC"),super.getMyTable().getString("ZTEXTO1"),super.getMyTable().getString("ZTEXTO2"),super.getMyTable().getString("ZTEXTO3"),super.getMyTable().getString("ZTEXTO4"));
                addUnaEspecie(especie);
            } 
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
        }

    }

    /**
     * Solo para las pruebas.
     * Imprime todos los registros de "super.getMyTable()".
     */
    @Override
    public void printAll() {
        System.out.println("ZESPECIE"+'\t'+"ZDENOMINAC"+"ZBULSTD"+'\t'+"ZTEXTO1"+'\t'+"ZTEXTO2"+'\t'+"ZTEXTO3"+'\t'+"ZTEXTO4");    
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("ZESPECIE") +
            '\t' + super.getMyTable().getString("ZDENOMINAC") + 
            '\t' + super.getMyTable().getString("ZBULSTD") +
            '\t' + super.getMyTable().getString("ZTEXTO1") + 
            '\t' + super.getMyTable().getString("ZTEXTO2") + 
            '\t' + super.getMyTable().getString("ZTEXTO3") +
            '\t' + super.getMyTable().getString("ZTEXTO4")); 
        }        
    }
}
